package models

import (
	"time"
)

type Images struct {
	ID          int64     `xorm:"pk autoincr"`
	Filename    string    `xorm:"varchar(255) notnull"`
	Path        string    `xorm:"varchar(255) notnull"`
	Description string    `xorm:"text"`
	UploadTime  time.Time `xorm:"timestamp default CURRENT_TIMESTAMP"`
}

type Logs struct {
	Id        int    `xorm:"not null pk autoincr INT" `
	LogLevel  string `xorm:"VARCHAR(50)" json:"level"`
	Timestamp int64  `xorm:"BIGINT" json:"ts"`
	Caller    string `xorm:"VARCHAR(255)"`
	Msg       string `xorm:"VARCHAR(255)"`
	Method    string `xorm:"VARCHAR(10)"`
	Path      string `xorm:"VARCHAR(255)"`
	Query     string `xorm:"VARCHAR(255)"`
	Body      string `xorm:"TEXT"`
	ApplyIp   string `xorm:"VARCHAR(50)" json:"ip"`
	Username  string `xorm:"VARCHAR(50)" json:"username"`
}

type TzArea struct {
	AreaId   int64  `xorm:"not null pk autoincr index BIGINT" json:"areaId,omitempty"`
	AreaName string `xorm:"VARCHAR(50)" json:"areaName,omitempty"`
	ParentId int64  `xorm:"index BIGINT" json:"parentId,omitempty"`
	Level    int    `xorm:"INT" json:"level,omitempty"`
}

type TzAttachFile struct {
	FileId       int64     `xorm:"not null pk autoincr BIGINT"`
	FilePath     string    `xorm:"comment('文件路径') VARCHAR(255)"`
	FileType     string    `xorm:"comment('文件类型') VARCHAR(20)"`
	FileSize     int       `xorm:"comment('文件大小') INT"`
	UploadTime   time.Time `xorm:"comment('上传时间') DATETIME"`
	FileJoinId   int64     `xorm:"comment('文件关联的表主键id') BIGINT"`
	FileJoinType int       `xorm:"comment('文件关联表类型：1 商品表  FileJoinType') TINYINT"`
}

type TzBasket struct {
	BasketId           uint64    `xorm:"not null pk autoincr comment('主键') UNSIGNED BIGINT"`
	ShopId             int64     `xorm:"not null comment('店铺ID') index unique(uk_user_shop_sku) BIGINT"`
	ProdId             uint64    `xorm:"not null default 0 comment('产品ID') UNSIGNED BIGINT"`
	SkuId              uint64    `xorm:"not null default 0 comment('SkuID') unique(uk_user_shop_sku) UNSIGNED BIGINT"`
	UserId             string    `xorm:"not null comment('用户ID') unique(uk_user_shop_sku) index VARCHAR(50)"`
	BasketCount        int       `xorm:"not null default 0 comment('购物车产品个数') INT"`
	BasketDate         time.Time `xorm:"not null comment('购物时间') DATETIME"`
	DiscountId         int64     `xorm:"comment('满减活动ID') BIGINT"`
	DistributionCardNo string    `xorm:"comment('分销推广人卡号') VARCHAR(36)"`
}

type TzBrand struct {
	BrandId    uint64    `xorm:"not null pk autoincr comment('主键') UNSIGNED BIGINT"`
	BrandName  string    `xorm:"not null default '' comment('品牌名称') VARCHAR(30)"`
	BrandPic   string    `xorm:"comment('图片路径') VARCHAR(255)"`
	UserId     string    `xorm:"not null default '' comment('用户ID') VARCHAR(36)"`
	Memo       string    `xorm:"comment('备注') VARCHAR(50)"`
	Seq        int       `xorm:"default 1 comment('顺序') INT"`
	Status     int       `xorm:"not null default 1 comment('默认是1，表示正常状态,0为下线状态') INT"`
	Brief      string    `xorm:"comment('简要描述') VARCHAR(100)"`
	Content    string    `xorm:"comment('内容') TEXT"`
	RecTime    time.Time `xorm:"comment('记录时间') DATETIME"`
	UpdateTime time.Time `xorm:"comment('更新时间') DATETIME"`
	FirstChar  string    `xorm:"comment('品牌首字母') VARCHAR(1)"`
}

type TzCategory struct {
	CategoryId   uint64    `xorm:"not null pk autoincr comment('类目ID') UNSIGNED BIGINT"`
	ShopId       int64     `xorm:"not null comment('店铺ID') index BIGINT"`
	ParentId     uint64    `xorm:"not null comment('父节点') index UNSIGNED BIGINT"`
	CategoryName string    `xorm:"not null default '' comment('产品类目名称') VARCHAR(50)"`
	Icon         string    `xorm:"comment('类目图标') VARCHAR(255)"`
	Pic          string    `xorm:"comment('类目的显示图片') VARCHAR(300)"`
	Seq          int       `xorm:"not null comment('排序') INT"`
	Status       int       `xorm:"not null default 1 comment('默认是1，表示正常状态,0为下线状态') INT"`
	RecTime      time.Time `xorm:"not null comment('记录时间') DATETIME"`
	Grade        int       `xorm:"not null comment('分类层级') INT"`
	UpdateTime   time.Time `xorm:"comment('更新时间') DATETIME"`
}

type TzCategoryBrand struct {
	Id         int64 `xorm:"pk autoincr BIGINT"`
	CategoryId int64 `xorm:"comment('分类id') index BIGINT"`
	BrandId    int64 `xorm:"comment('品牌id') index BIGINT"`
}

type TzCategoryProp struct {
	Id         int64 `xorm:"pk autoincr BIGINT"`
	CategoryId int64 `xorm:"comment('分类id') index BIGINT"`
	PropId     int64 `xorm:"comment('商品属性id即表tz_prod_prop中的prop_id') index BIGINT"`
}

type TzDelivery struct {
	DvyId          uint64    `xorm:"'dvy_id' not null pk autoincr BIGINT(20) UNSIGNED"`
	DvyName        string    `xorm:"'dvy_name' not null VARCHAR(50)"`
	CompanyHomeUrl string    `xorm:"'company_home_url' VARCHAR(255)"`
	RecTime        time.Time `xorm:"'rec_time' not null DATETIME"`
	ModifyTime     time.Time `xorm:"'modify_time' not null DATETIME"`
	QueryUrl       string    `xorm:"'query_url' not null VARCHAR(520)"`
}

type TzHotSearch struct {
	HotSearchId uint64    `xorm:"not null pk autoincr comment('主键') UNSIGNED BIGINT"`
	ShopId      int64     `xorm:"comment('店铺ID 0为全局热搜') index BIGINT"`
	Content     string    `xorm:"not null comment('内容') VARCHAR(255)"`
	RecDate     time.Time `xorm:"not null comment('录入时间') DATETIME"`
	Seq         int       `xorm:"comment('顺序') INT"`
	Status      int       `xorm:"not null default 1 comment('状态 0下线 1上线') TINYINT"`
	Title       string    `xorm:"not null comment('热搜标题') VARCHAR(255)"`
}

type TzIndexImg struct {
	ImgID      uint64    `xorm:"'img_id' notnull pk autoincr comment('主键') BIGINT" json:"imgId,omitempty" `
	ShopID     uint64    `xorm:"'shop_id' comment('店铺 ID') BIGINT" json:"shopId,omitempty"`
	ImgUrl     string    `xorm:"'img_url' notnull comment('图片') VARCHAR(200)" json:"imgUrl,omitempty"`
	Des        string    `xorm:"'des' comment('说明文字,描述') VARCHAR(200)" json:"des,omitempty"`
	Title      string    `xorm:"'title' comment('标题') VARCHAR(200)" json:"title,omitempty"`
	Link       string    `xorm:"'link' comment('链接') VARCHAR(200)" json:"link,omitempty"`
	Status     int8      `xorm:"'status' comment('状态') TINYINT" json:"status,omitempty"`
	Seq        int       `xorm:"'seq' comment('顺序') INT" json:"seq"`
	UploadTime time.Time `xorm:"'upload_time' comment('上传时间') DATETIME" json:"uploadTime,omitempty"`
	Relation   uint64    `xorm:"'relation' comment('关联') BIGINT" json:"relation,omitempty"`
	Type       int       `xorm:"'type' comment('类型') INT" json:"type,omitempty"`
}

type TzMessage struct {
	Id         uint64    `xorm:"not null pk autoincr UNSIGNED BIGINT"`
	CreateTime time.Time `xorm:"comment('留言创建时间') DATETIME"`
	UserName   string    `xorm:"comment('姓名') VARCHAR(36)"`
	Email      string    `xorm:"comment('邮箱') VARCHAR(64)"`
	Contact    string    `xorm:"comment('联系方式') VARCHAR(36)"`
	Content    string    `xorm:"comment('留言内容') TEXT"`
	Reply      string    `xorm:"comment('留言回复') TEXT"`
	Status     int       `xorm:"comment('状态：0:未审核 1审核通过') TINYINT"`
}

type TzNotice struct {
	Id          int64     `xorm:"pk autoincr comment('公告id') BIGINT" json:"id"`
	ShopId      int64     `xorm:"comment('店铺id') BIGINT" json:"shopId"`
	Title       string    `xorm:"comment('公告标题') VARCHAR(36)" json:"title"`
	Content     string    `xorm:"comment('公告内容') TEXT" json:"content"`
	Status      int       `xorm:"comment('状态(1:公布 0:撤回)') TINYINT(1)" json:"status"`
	IsTop       int       `xorm:"comment('是否置顶') TINYINT" json:"isTop"`
	PublishTime time.Time `xorm:"comment('发布时间') TIMESTAMP" json:"publishTime"`
	UpdateTime  time.Time `xorm:"default CURRENT_TIMESTAMP comment('更新时间') TIMESTAMP" json:"updateTime"`
}
type TzOrder struct {
	OrderID         int64     `xorm:"'order_id' pk autoincr comment('订单ID')"`
	ShopID          int64     `xorm:"'shop_id' comment('店铺id')"`
	ProdName        string    `xorm:"'prod_name' notnull varchar(1000) comment('产品名称,多个产品将会以逗号隔开')"`
	UserID          string    `xorm:"'user_id' notnull varchar(36) comment('订购用户ID')"`
	OrderNumber     string    `xorm:"'order_number' notnull varchar(50) comment('订购流水号')"`
	Total           float64   `xorm:"'total' notnull decimal(15,2) comment('总值')"`
	ActualTotal     float64   `xorm:"'actual_total' decimal(15,2) comment('实际总值')"`
	PayType         int       `xorm:"'pay_type' comment('支付方式 0 手动代付 1 微信支付 2 支付宝')"`
	Remarks         string    `xorm:"'remarks' varchar(1024) comment('订单备注')"`
	Status          int       `xorm:"'status' notnull comment('订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6:失败')"`
	DvyType         string    `xorm:"'dvy_type' varchar(10) comment('配送类型')"`
	DvyID           int64     `xorm:"'dvy_id' comment('配送方式ID')"`
	DvyFlowID       string    `xorm:"'dvy_flow_id' varchar(100) default('') comment('物流单号')"`
	FreightAmount   float64   `xorm:"'freight_amount' decimal(15,2) default(0.00) comment('订单运费')"`
	AddrOrderID     int64     `xorm:"'addr_order_id' comment('用户订单地址Id')"`
	ProductNums     int       `xorm:"'product_nums' comment('订单商品总数')"`
	CreateTime      time.Time `xorm:"'create_time' notnull comment('订购时间')"`
	UpdateTime      time.Time `xorm:"'update_time' comment('订单更新时间')"`
	PayTime         time.Time `xorm:"'pay_time' comment('付款时间')"`
	DvyTime         time.Time `xorm:"'dvy_time' comment('发货时间')"`
	FinallyTime     time.Time `xorm:"'finally_time' comment('完成时间')"`
	CancelTime      time.Time `xorm:"'cancel_time' comment('取消时间')"`
	IsPayed         *int8     `xorm:"'is_payed' comment('是否已经支付，1：已经支付过，0：，没有支付过')"`
	DeleteStatus    int       `xorm:"'delete_status' default(0) comment('用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除')"`
	RefundSts       int       `xorm:"'refund_sts' default(0) comment('0:默认,1:在处理,2:处理完成')"`
	ReduceAmount    float64   `xorm:"'reduce_amount' decimal(15,2) comment('优惠总额')"`
	OrderType       *int8     `xorm:"'order_type' comment('订单类型')"`
	CloseType       *int8     `xorm:"'close_type' comment('订单关闭原因 1-超时未支付 2-退款关闭 4-买家取消 15-已通过货到付款交易')"`
	XXX_tableParams string    `xorm:"-"` // 保留字段，用于扩展表参数
}

type TzOrderItem struct {
	OrderItemId        uint64    `xorm:"not null pk autoincr comment('订单项ID') UNSIGNED BIGINT"`
	ShopId             int64     `xorm:"not null comment('店铺id') BIGINT"`
	OrderNumber        string    `xorm:"not null comment('订单order_number') index VARCHAR(50)"`
	ProdId             uint64    `xorm:"not null comment('产品ID') UNSIGNED BIGINT"`
	SkuId              uint64    `xorm:"not null comment('产品SkuID') UNSIGNED BIGINT"`
	ProdCount          int       `xorm:"not null default 0 comment('购物车产品个数') INT"`
	ProdName           string    `xorm:"not null default '' comment('产品名称') VARCHAR(120)"`
	SkuName            string    `xorm:"comment('sku名称') VARCHAR(120)"`
	Pic                string    `xorm:"not null default '' comment('产品主图片路径') VARCHAR(255)"`
	Price              string    `xorm:"not null comment('产品价格') DECIMAL(15,2)"`
	UserId             string    `xorm:"not null default '' comment('用户Id') VARCHAR(36)"`
	ProductTotalAmount string    `xorm:"not null comment('商品总金额') DECIMAL(15,2)"`
	RecTime            time.Time `xorm:"not null comment('购物时间') DATETIME"`
	CommSts            int       `xorm:"not null default 0 comment('评论状态： 0 未评价  1 已评价') INT"`
	DistributionCardNo string    `xorm:"comment('推广员使用的推销卡号') VARCHAR(36)"`
	BasketDate         time.Time `xorm:"comment('加入购物车时间') DATETIME"`
}
type TzOrderRefund struct {
	RefundId       int64     `xorm:"not null pk autoincr comment('记录ID') BIGINT"`
	ShopId         int64     `xorm:"not null comment('店铺ID') BIGINT"`
	OrderId        int64     `xorm:"not null comment('订单ID') BIGINT"`
	OrderNumber    string    `xorm:"not null comment('订单流水号') index VARCHAR(50)"`
	OrderAmount    float64   `xorm:"not null comment('订单总金额') DOUBLE(12,2)"`
	OrderItemId    int64     `xorm:"not null default 0 comment('订单项ID 全部退款是0') BIGINT"`
	RefundSn       string    `xorm:"not null comment('退款编号') unique VARCHAR(50)"`
	FlowTradeNo    string    `xorm:"not null comment('订单支付流水号') VARCHAR(100)"`
	OutRefundNo    string    `xorm:"comment('第三方退款单号(微信退款单号)') VARCHAR(200)"`
	PayType        int       `xorm:"comment('订单支付方式 1 微信支付 2 支付宝') INT"`
	PayTypeName    string    `xorm:"comment('订单支付名称') VARCHAR(50)"`
	UserId         string    `xorm:"not null comment('买家ID') VARCHAR(50)"`
	GoodsNum       int       `xorm:"comment('退货数量') INT"`
	RefundAmount   string    `xorm:"not null comment('退款金额') DECIMAL(10,2)"`
	ApplyType      int       `xorm:"not null default 0 comment('申请类型:1,仅退款,2退款退货') INT"`
	RefundSts      int       `xorm:"not null default 0 comment('处理状态:1为待审核,2为同意,3为不同意') INT"`
	ReturnMoneySts int       `xorm:"not null default 0 comment('处理退款状态: 0:退款处理中 1:退款成功 -1:退款失败') INT"`
	ApplyTime      time.Time `xorm:"not null comment('申请时间') DATETIME"`
	HandelTime     time.Time `xorm:"comment('卖家处理时间') DATETIME"`
	RefundTime     time.Time `xorm:"comment('退款时间') DATETIME"`
	PhotoFiles     string    `xorm:"comment('文件凭证json') VARCHAR(150)"`
	BuyerMsg       string    `xorm:"comment('申请原因') VARCHAR(300)"`
	SellerMsg      string    `xorm:"comment('卖家备注') VARCHAR(300)"`
	ExpressName    string    `xorm:"comment('物流公司名称') VARCHAR(50)"`
	ExpressNo      string    `xorm:"comment('物流单号') VARCHAR(50)"`
	ShipTime       time.Time `xorm:"comment('发货时间') DATETIME"`
	ReceiveTime    time.Time `xorm:"comment('收货时间') DATETIME"`
	ReceiveMessage string    `xorm:"comment('收货备注') VARCHAR(300)"`
}

type TzOrderSettlement struct {
	SettlementId uint64    `xorm:"not null pk autoincr comment('支付结算单据ID') UNSIGNED BIGINT"`
	PayNo        string    `xorm:"comment('支付单号') VARCHAR(36)"`
	BizPayNo     string    `xorm:"comment('外部订单流水号') VARCHAR(255)"`
	OrderNumber  string    `xorm:"comment('order表中的订单号') unique VARCHAR(36)"`
	PayType      int       `xorm:"comment('支付方式 1 微信支付 2 支付宝') INT"`
	PayTypeName  string    `xorm:"comment('支付方式名称') VARCHAR(50)"`
	PayAmount    string    `xorm:"comment('支付金额') DECIMAL(15,2)"`
	IsClearing   int       `xorm:"comment('是否清算 0:否 1:是') INT"`
	UserId       string    `xorm:"comment('用户ID') index VARCHAR(36)"`
	CreateTime   time.Time `xorm:"not null comment('创建时间') DATETIME"`
	ClearingTime time.Time `xorm:"comment('清算时间') DATETIME"`
	Version      int       `xorm:"comment('版本号') INT"`
	PayStatus    int       `xorm:"comment('支付状态') INT"`
}

type TzPickAddr struct {
	AddrId     uint64 `xorm:"not null pk autoincr comment('ID') UNSIGNED BIGINT"`
	AddrName   string `xorm:"comment('自提点名称') VARCHAR(36)"`
	Addr       string `xorm:"comment('地址') VARCHAR(1000)"`
	Mobile     string `xorm:"comment('手机') VARCHAR(20)"`
	ProvinceId int64  `xorm:"comment('省份ID') BIGINT"`
	Province   string `xorm:"comment('省份') VARCHAR(32)"`
	CityId     int64  `xorm:"comment('城市ID') BIGINT"`
	City       string `xorm:"comment('城市') VARCHAR(32)"`
	AreaId     int64  `xorm:"comment('区/县ID') BIGINT"`
	Area       string `xorm:"comment('区/县') VARCHAR(32)"`
	ShopId     int64  `xorm:"comment('店铺id') BIGINT"`
}

type TzProd struct {
	ProdID             uint64    `xorm:"'prod_id' notnull pk autoincr comment('产品 ID') BIGINT"`
	ProdName           string    `xorm:"'prod_name' notnull default '' comment('商品名称') VARCHAR(300)"`
	ShopID             uint64    `xorm:"'shop_id' comment('店铺 id') BIGINT"`
	OriPrice           float64   `xorm:"'ori_price' default 0.00 comment('原价') DECIMAL(15,2)"`
	Price              float64   `xorm:"'price' comment('现价') DECIMAL(15,2)"`
	Brief              string    `xorm:"'brief' default '' comment('简要描述,卖点等') VARCHAR(500)"`
	Content            string    `xorm:"'content' comment('详细描述') TEXT"`
	Pic                string    `xorm:"'pic' default NULL comment('商品主图') VARCHAR(255)"`
	Imgs               string    `xorm:"'imgs' default NULL comment('商品图片，以,分割') VARCHAR(1000)"`
	Status             int       `xorm:"'status' default 0 comment('默认是 1，表示正常状态, -1 表示删除, 0 下架') INT"`
	CategoryId         uint64    `xorm:"'category_id' comment('商品分类') BIGINT UNSIGNED"`
	SoldNum            int       `xorm:"'sold_num' comment('销量') INT"`
	TotalStocks        int       `xorm:"'total_stocks' default 0 comment('总库存') INT"`
	DeliveryMode       []byte    `xorm:"'delivery_mode' comment('配送方式 json 见 TransportModeVO') JSON"`
	DeliveryTemplateID uint64    `xorm:"'delivery_template_id' comment('运费模板 id') BIGINT"`
	CreateTime         time.Time `xorm:"'create_time' comment('录入时间') DATETIME"`
	UpdateTime         time.Time `xorm:"'update_time' comment('修改时间') DATETIME"`
	PutawayTime        time.Time `xorm:"'putaway_time' comment('上架时间') DATETIME"`
	Version            int       `xorm:"'version' comment('版本 乐观锁') INT"`
}

type TzProdComm struct {
	ProdCommId   uint64    `xorm:"not null pk autoincr comment('ID') UNSIGNED BIGINT"`
	ProdId       uint64    `xorm:"not null comment('商品ID') index UNSIGNED BIGINT"`
	OrderItemId  uint64    `xorm:"comment('订单项ID') UNSIGNED BIGINT"`
	UserId       string    `xorm:"comment('评论用户ID') VARCHAR(36)"`
	Content      string    `xorm:"default '' comment('评论内容') VARCHAR(500)"`
	ReplyContent string    `xorm:"default '' comment('掌柜回复') VARCHAR(500)"`
	RecTime      time.Time `xorm:"comment('记录时间') DATETIME"`
	ReplyTime    time.Time `xorm:"comment('回复时间') DATETIME"`
	ReplySts     int       `xorm:"default 0 comment('是否回复 0:未回复  1:已回复') INT"`
	Postip       string    `xorm:"comment('IP来源') VARCHAR(16)"`
	Score        int       `xorm:"default 0 comment('得分，0-5分') TINYINT"`
	UsefulCounts int       `xorm:"default 0 comment('有用的计数') INT"`
	Pics         string    `xorm:"comment('晒图的json字符串') VARCHAR(1000)"`
	IsAnonymous  int       `xorm:"default 0 comment('是否匿名(1:是  0:否)') INT"`
	Status       int       `xorm:"comment('是否显示，1:为显示，0:待审核， -1：不通过审核，不显示。 如果需要审核评论，则是0,，否则1') INT"`
	Evaluate     int       `xorm:"comment('评价(0好评 1中评 2差评)') TINYINT"`
}

type TzProdFavorite struct {
	FavoriteId uint64    `xorm:"not null pk autoincr comment('主键') UNSIGNED BIGINT"`
	ProdId     uint64    `xorm:"not null comment('商品ID') index UNSIGNED BIGINT"`
	RecTime    time.Time `xorm:"not null comment('收藏时间') DATETIME"`
	UserId     string    `xorm:"not null default '' comment('用户ID') VARCHAR(36)"`
}

type TzProdProp struct {
	PropId   int64  `xorm:"not null pk autoincr comment('属性id') BIGINT"`
	PropName string `xorm:"comment('属性名称') VARCHAR(20)"`
	Rule     int    `xorm:"comment('ProdPropRule 1:销售属性(规格); 2:参数属性;') TINYINT"`
	ShopId   int64  `xorm:"comment('店铺id') index BIGINT"`
}

type TzProdPropValue struct {
	ValueId   int64  `xorm:"not null pk autoincr comment('属性值ID') BIGINT"`
	PropValue string `xorm:"comment('属性值名称') VARCHAR(20)"`
	PropId    int64  `xorm:"comment('属性ID') index BIGINT"`
}

type TzProdTag struct {
	Id         int64     `xorm:"pk autoincr comment('分组标签id') BIGINT"`
	Title      string    `xorm:"comment('分组标题') VARCHAR(36)"`
	ShopId     int64     `xorm:"comment('店铺Id') BIGINT"`
	Status     int       `xorm:"comment('状态(1为正常,0为删除)') TINYINT(1)"`
	IsDefault  int       `xorm:"comment('默认类型(0:商家自定义,1:系统默认)') TINYINT(1)"`
	ProdCount  int64     `xorm:"comment('商品数量') BIGINT"`
	Style      int       `xorm:"comment('列表样式(0:一列一个,1:一列两个,2:一列三个)') INT"`
	Seq        int       `xorm:"comment('排序') INT"`
	CreateTime time.Time `xorm:"comment('创建时间') TIMESTAMP"`
	UpdateTime time.Time `xorm:"comment('修改时间') TIMESTAMP"`
	DeleteTime time.Time `xorm:"comment('删除时间') TIMESTAMP"`
}

type TzProdTagReference struct {
	ReferenceId int64     `xorm:"not null pk autoincr comment('分组引用id') BIGINT"`
	ShopId      int64     `xorm:"comment('店铺id') BIGINT"`
	TagId       int64     `xorm:"comment('标签id') BIGINT"`
	ProdId      int64     `xorm:"comment('商品id') BIGINT"`
	Status      int       `xorm:"comment('状态(1:正常,0:删除)') TINYINT(1)"`
	CreateTime  time.Time `xorm:"not null default CURRENT_TIMESTAMP comment('创建时间') TIMESTAMP"`
}

type TzShopDetail struct {
	ShopId           int64     `xorm:"not null pk autoincr comment('店铺id') BIGINT"`
	ShopName         string    `xorm:"comment('店铺名称(数字、中文，英文(可混合，不可有特殊字符)，可修改)、不唯一') VARCHAR(50)"`
	UserId           string    `xorm:"comment('店长用户id') unique VARCHAR(36)"`
	ShopType         int       `xorm:"comment('店铺类型') TINYINT"`
	Intro            string    `xorm:"comment('店铺简介(可修改)') VARCHAR(200)"`
	ShopNotice       string    `xorm:"comment('店铺公告(可修改)') VARCHAR(50)"`
	ShopIndustry     int       `xorm:"comment('店铺行业(餐饮、生鲜果蔬、鲜花等)') TINYINT"`
	ShopOwner        string    `xorm:"comment('店长') VARCHAR(20)"`
	Mobile           string    `xorm:"comment('店铺绑定的手机(登录账号：唯一)') unique VARCHAR(20)"`
	Tel              string    `xorm:"comment('店铺联系电话') VARCHAR(20)"`
	ShopLat          string    `xorm:"comment('店铺所在纬度(可修改)') VARCHAR(20)"`
	ShopLng          string    `xorm:"comment('店铺所在经度(可修改)') VARCHAR(20)"`
	ShopAddress      string    `xorm:"comment('店铺详细地址') VARCHAR(100)"`
	Province         string    `xorm:"comment('店铺所在省份（描述）') VARCHAR(10)"`
	City             string    `xorm:"comment('店铺所在城市（描述）') VARCHAR(10)"`
	Area             string    `xorm:"comment('店铺所在区域（描述）') VARCHAR(10)"`
	PcaCode          string    `xorm:"comment('店铺省市区代码，用于回显') VARCHAR(20)"`
	ShopLogo         string    `xorm:"comment('店铺logo(可修改)') VARCHAR(200)"`
	ShopPhotos       string    `xorm:"comment('店铺相册') VARCHAR(1000)"`
	OpenTime         string    `xorm:"comment('每天营业时间段(可修改)') VARCHAR(100)"`
	ShopStatus       int       `xorm:"comment('店铺状态(-1:未开通 0: 停业中 1:营业中)，可修改') TINYINT"`
	TransportType    int       `xorm:"comment('0:商家承担运费; 1:买家承担运费') TINYINT"`
	FixedFreight     string    `xorm:"comment('固定运费') DECIMAL(15,2)"`
	FullFreeShipping string    `xorm:"comment('满X包邮') DECIMAL(15,2)"`
	CreateTime       time.Time `xorm:"comment('创建时间') DATETIME"`
	UpdateTime       time.Time `xorm:"comment('更新时间') DATETIME"`
	IsDistribution   int       `xorm:"comment('分销开关(0:开启 1:关闭)') TINYINT"`
}

type TzSku struct {
	SkuId        uint64    `xorm:"not null pk autoincr comment('单品ID') UNSIGNED BIGINT"`
	ProdId       uint64    `xorm:"not null comment('商品ID') index UNSIGNED BIGINT"`
	Properties   string    `xorm:"default '' comment('销售属性组合字符串 格式是p1:v1;p2:v2') VARCHAR(2000)"`
	OriPrice     string    `xorm:"comment('原价') DECIMAL(15,2)"`
	Price        string    `xorm:"comment('价格') DECIMAL(15,2)"`
	Stocks       int       `xorm:"not null comment('商品在付款减库存的状态下，该sku上未付款的订单数量') INT"`
	ActualStocks int       `xorm:"comment('实际库存') INT"`
	UpdateTime   time.Time `xorm:"not null comment('修改时间') DATETIME"`
	RecTime      time.Time `xorm:"not null comment('记录时间') DATETIME"`
	PartyCode    string    `xorm:"comment('商家编码') VARCHAR(100)"`
	ModelId      string    `xorm:"comment('商品条形码') VARCHAR(100)"`
	Pic          string    `xorm:"comment('sku图片') VARCHAR(500)"`
	SkuName      string    `xorm:"comment('sku名称') VARCHAR(120)"`
	ProdName     string    `xorm:"comment('商品名称') VARCHAR(255)"`
	Version      int       `xorm:"not null default 0 comment('版本号') INT"`
	Weight       float64   `xorm:"comment('商品重量') DOUBLE"`
	Volume       float64   `xorm:"comment('商品体积') DOUBLE"`
	Status       int       `xorm:"default 1 comment('0 禁用 1 启用') TINYINT"`
	IsDelete     int       `xorm:"comment('0 正常 1 已被删除') TINYINT"`
}

type TzSmsLog struct {
	Id           uint64    `xorm:"not null pk autoincr comment('ID') UNSIGNED BIGINT"`
	UserId       string    `xorm:"comment('用户id') VARCHAR(50)"`
	UserPhone    string    `xorm:"not null default '' comment('手机号码') VARCHAR(20)"`
	Content      string    `xorm:"not null default '' comment('短信内容') VARCHAR(100)"`
	MobileCode   string    `xorm:"not null default '' comment('手机验证码') VARCHAR(50)"`
	Type         int       `xorm:"not null default 0 comment('短信类型  1:注册  2:验证') INT"`
	RecDate      time.Time `xorm:"not null comment('发送时间') DATETIME"`
	ResponseCode string    `xorm:"comment('发送短信返回码') VARCHAR(50)"`
	Status       int       `xorm:"not null default 0 comment('状态  1:有效  0：失效') INT"`
}

type TzSysConfig struct {
	Id         int64  `xorm:"pk autoincr BIGINT"`
	ParamKey   string `xorm:"comment('key') unique VARCHAR(50)"`
	ParamValue string `xorm:"comment('value') VARCHAR(2000)"`
	Remark     string `xorm:"comment('备注') VARCHAR(500)"`
}

type TzSysLog struct {
	Id         int64     `xorm:"pk autoincr BIGINT"`
	Username   string    `xorm:"comment('用户名') VARCHAR(50)"`
	Operation  string    `xorm:"comment('用户操作') VARCHAR(50)"`
	Method     string    `xorm:"comment('请求方法') VARCHAR(200)"`
	Params     string    `xorm:"comment('请求参数') VARCHAR(5000)"`
	Time       int64     `xorm:"not null comment('执行时长(毫秒)') BIGINT"`
	Ip         string    `xorm:"comment('IP地址') VARCHAR(64)"`
	CreateDate time.Time `xorm:"comment('创建时间') DATETIME"`
}

type TzSysMenu struct {
	MenuId   int64  `xorm:"not null pk autoincr BIGINT" json:"menuId"`
	ParentId int64  `xorm:"comment('父菜单ID，一级菜单为0') BIGINT" json:"parentId"`
	Name     string `xorm:"comment('菜单名称') VARCHAR(50)"`
	Url      string `xorm:"comment('菜单URL') VARCHAR(200)"`
	Perms    string `xorm:"comment('授权(多个用逗号分隔，如：user:list,user:create)') VARCHAR(500)"`
	Type     int    `xorm:"comment('类型   0：目录   1：菜单   2：按钮') INT"`
	Icon     string `xorm:"comment('菜单图标') VARCHAR(50)"`
	OrderNum int    `xorm:"comment('排序') INT"`
}

type TzSysRole struct {
	RoleId       int64     `xorm:"not null pk autoincr BIGINT"`
	RoleName     string    `xorm:"comment('角色名称') VARCHAR(100)"`
	Remark       string    `xorm:"comment('备注') VARCHAR(100)"`
	CreateUserId int64     `xorm:"comment('创建者ID') BIGINT"`
	CreateTime   time.Time `xorm:"comment('创建时间') DATETIME"`
}

type TzSysRoleMenu struct {
	Id     int64 `xorm:"pk autoincr BIGINT"`
	RoleId int64 `xorm:"comment('角色ID') BIGINT"`
	MenuId int64 `xorm:"comment('菜单ID') BIGINT"`
}

type TzSysUser struct {
	UserId       int64     `xorm:"not null pk autoincr BIGINT" json:"userId,omitempty"`
	Username     string    `xorm:"not null comment('用户名') unique VARCHAR(50)" json:"username,omitempty"`
	Password     string    `xorm:"comment('密码') VARCHAR(100)" json:"password,omitempty"`
	Email        string    `xorm:"comment('邮箱') VARCHAR(100)" json:"email,omitempty"`
	Mobile       string    `xorm:"comment('手机号') VARCHAR(100)" json:"mobile,omitempty"`
	Status       int       `xorm:"comment('状态  0：禁用   1：正常') TINYINT" json:"status,omitempty"`
	CreateUserId int64     `xorm:"comment('创建者ID') BIGINT" json:"createUserId,omitempty"`
	CreateTime   time.Time `xorm:"comment('创建时间') DATETIME" json:"createTime"`
	ShopId       int64     `xorm:"comment('用户所在的商城Id') BIGINT" json:"shopId,omitempty"`
}

type TzSysUserRole struct {
	Id     int64 `xorm:"pk autoincr BIGINT"`
	UserId int64 `xorm:"comment('用户ID') BIGINT"`
	RoleId int64 `xorm:"comment('角色ID') BIGINT"`
}

type TzTranscity struct {
	TranscityId int64 `xorm:"not null pk autoincr BIGINT"`
	TransfeeId  int64 `xorm:"comment('运费项id') index BIGINT"`
	CityId      int64 `xorm:"comment('城市id') index BIGINT"`
}

type TzTranscityFree struct {
	TranscityFreeId int64 `xorm:"not null pk autoincr comment('指定条件包邮城市项id') BIGINT"`
	TransfeeFreeId  int64 `xorm:"comment('指定条件包邮项id') index BIGINT"`
	FreeCityId      int64 `xorm:"comment('城市id') index BIGINT"`
}

type TzTransfee struct {
	TransfeeId      int64  `xorm:"not null pk autoincr comment('运费项id') BIGINT"`
	TransportId     int64  `xorm:"comment('运费模板id') index BIGINT"`
	ContinuousPiece string `xorm:"comment('续件数量') DECIMAL(15,2)"`
	FirstPiece      string `xorm:"comment('首件数量') DECIMAL(15,2)"`
	ContinuousFee   string `xorm:"comment('续件费用') DECIMAL(15,2)"`
	FirstFee        string `xorm:"comment('首件费用') DECIMAL(15,2)"`
}

type TzTransfeeFree struct {
	TransfeeFreeId int64  `xorm:"not null pk autoincr comment('指定条件包邮项id') BIGINT"`
	TransportId    int64  `xorm:"comment('运费模板id') index BIGINT"`
	FreeType       int    `xorm:"comment('包邮方式 （0 满x件/重量/体积包邮 1满金额包邮 2满x件/重量/体积且满金额包邮）') TINYINT"`
	Amount         string `xorm:"comment('需满金额') DECIMAL(15,2)"`
	Piece          string `xorm:"comment('包邮x件/重量/体积') DECIMAL(15,2)"`
}

type TzTransport struct {
	TransportId      int64     `xorm:"not null pk autoincr comment('运费模板id') BIGINT" json:"transportId"`
	TransName        string    `xorm:"comment('运费模板名称') VARCHAR(36)" json:"transName"`
	CreateTime       time.Time `xorm:"comment('创建时间') DATETIME" json:"createTime"`
	ShopId           int64     `xorm:"comment('店铺id') index BIGINT" json:"shopId"`
	ChargeType       int       `xorm:"comment('收费方式（0 按件数,1 按重量 2 按体积）') TINYINT" json:"chargeType"`
	IsFreeFee        int       `xorm:"comment('是否包邮 0:不包邮 1:包邮') TINYINT" json:"isFreeFee"`
	HasFreeCondition int       `xorm:"comment('是否含有包邮条件 0 否 1是') TINYINT" json:"hasFreeCondition"`
}

type TzUser struct {
	UserId        string    `xorm:"not null pk default '' comment('ID') VARCHAR(36)"`
	NickName      string    `xorm:"comment('用户昵称') VARCHAR(50)"`
	RealName      string    `xorm:"comment('真实姓名') VARCHAR(50)"`
	UserMail      string    `xorm:"comment('用户邮箱') unique VARCHAR(100)"`
	LoginPassword string    `xorm:"comment('登录密码') VARCHAR(255)"`
	PayPassword   string    `xorm:"comment('支付密码') VARCHAR(50)"`
	UserMobile    string    `xorm:"comment('手机号码') unique VARCHAR(50)"`
	ModifyTime    time.Time `xorm:"not null comment('修改时间') DATETIME"`
	UserRegtime   time.Time `xorm:"not null comment('注册时间') DATETIME"`
	UserRegip     string    `xorm:"comment('注册IP') VARCHAR(50)"`
	UserLasttime  time.Time `xorm:"comment('最后登录时间') DATETIME"`
	UserLastip    string    `xorm:"comment('最后登录IP') VARCHAR(50)"`
	UserMemo      string    `xorm:"comment('备注') VARCHAR(500)"`
	Sex           string    `xorm:"default 'M' comment('M(男) or F(女)') CHAR(1)"`
	BirthDate     string    `xorm:"comment('例如：2009-11-27') CHAR(10)"`
	Pic           string    `xorm:"comment('头像图片路径') VARCHAR(255)"`
	Status        int       `xorm:"not null default 1 comment('状态 1 正常 0 无效') INT"`
	Score         int       `xorm:"comment('用户积分') INT"`
}

type TzUserAddr struct {
	AddrId uint64 `xorm:"'addr_id' pk autoincr comment('ID')"`
	UserId string `xorm:"'user_id' varchar(36) notnull '0' comment('用户ID')"`
	// 注意：这里 '0' 应该是一个默认值，但它应该放在 SQL 语句中，而不是 XORM 标签里。
	// XORM 不直接支持默认值设置，这需要在数据库层面处理。
	// 正确的做法是在数据库迁移脚本或 SQL 创建语句中设置默认值。
	Receiver   string `xorm:"'receiver' varchar(50) null comment('收货人')"`
	ProvinceId uint64 `xorm:"'province_id' bigint null comment('省ID')"`
	// 如果 ProvinceId 可以为 null，则不应该使用 *uint64，除非你有特别的理由需要这样做。
	// 在这里，我假设它不应该为 null，因为通常省份 ID 是已知的（或者是一个外键）。
	// 如果你想要它能够为 null，请保留 *uint64 类型。
	Province   string    `xorm:"'province' varchar(100) null comment('省')"`
	City       string    `xorm:"'city' varchar(20) null comment('城市')"`
	CityId     uint64    `xorm:"'city_id' bigint null comment('城市ID')"`
	Area       string    `xorm:"'area' varchar(20) null comment('区')"`
	AreaId     uint64    `xorm:"'area_id' bigint null comment('区ID')"`
	PostCode   string    `xorm:"'post_code' varchar(15) null comment('邮编')"`
	Addr       string    `xorm:"'addr' varchar(1000) null comment('地址')"`
	Mobile     string    `xorm:"'mobile' varchar(20) null comment('手机')"`
	Status     int       `xorm:"'status' notnull comment('状态,1正常，0无效')"`
	CommonAddr int       `xorm:"'common_addr' notnull default 0 comment('是否默认地址 1是')"`
	CreateTime time.Time `xorm:"'create_time' notnull comment('建立时间')"`
	Version    int       `xorm:"'version' notnull default 0 comment('版本号')"`
	UpdateTime time.Time `xorm:"'update_time' notnull comment('更新时间')"`
}
type TzUserAddrOrder struct {
	AddrOrderId uint64    `xorm:"not null pk  comment('ID') UNSIGNED BIGINT"`
	AddrId      uint64    `xorm:"not null comment('地址ID') UNSIGNED BIGINT"`
	UserId      string    `xorm:"not null default '0' comment('用户ID') VARCHAR(36)"`
	Receiver    string    `xorm:"comment('收货人') VARCHAR(50)"`
	ProvinceId  int64     `xorm:"comment('省ID') BIGINT"`
	Province    string    `xorm:"comment('省') VARCHAR(100)"`
	AreaId      int64     `xorm:"comment('区域ID') BIGINT"`
	Area        string    `xorm:"comment('区') VARCHAR(20)"`
	CityId      int64     `xorm:"comment('城市ID') BIGINT"`
	City        string    `xorm:"comment('城市') VARCHAR(20)"`
	Addr        string    `xorm:"comment('地址') VARCHAR(1000)"`
	PostCode    string    `xorm:"comment('邮编') VARCHAR(15)"`
	Mobile      string    `xorm:"comment('手机') VARCHAR(20)"`
	CreateTime  time.Time `xorm:"not null comment('建立时间') DATETIME"`
	Version     int       `xorm:"not null default 0 comment('版本号') INT"`
}

type TzUserCollection struct {
	Id         int64     `xorm:"pk autoincr comment('收藏表') BIGINT"`
	ProdId     int64     `xorm:"comment('商品id') BIGINT"`
	UserId     string    `xorm:"not null comment('用户id') VARCHAR(36)"`
	CreateTime time.Time `xorm:"comment('收藏时间') DATETIME"`
}
